Op deze pagina vind je een demonstratie van een statistische techniek aan de hand van een voorbeeld.

Meer informatie over hoe je deze pagina kan gebruiken vind je in deze handleiding.

De analyse gebeurt met behulp van R en RStudio. Een inleiding tot deze software vind je hier.


Referentie

Het voorbeeld op deze pagina is geïnspireerd door een studie van Mell et al. (2021). Om praktische en didactische redenen werden de hypothesen en de data aangepast.



1 Doel

Lineaire regressie is een statistische techniek die je kan gebruiken om een hypothese te toetsen over het effect van een variabele (een onafhankelijke variabele of predictor) op een andere variabele (de afhankelijke variabele of uitkomst). In lineaire regressie is die afhankelijke variabele altijd continu, dus ten minste van intervalniveau.

Zo goed als altijd zal je moeten controleren voor extra predictoren die het resultaat van de toetsing kunnen beïnvloeden.

Op deze pagina kom je te weten hoe je zo’n hypothesetoetsing kan uitvoeren in het geval dat de predictor een continue variabele is.



2 De dataset

De dataset dataVertrouwen bevat gegevens van 7 variabelen geobserveerd bij 1217 Belgen.

Deze dataset kan je inladen met read.csv(). De data kan je best meteen in een object dataVertrouwen onderbrengen zodat je die later makkelijk opnieuw kan oproepen.

dataVertrouwen <- read.csv("https://statlas.ugent.be/datasets/vertrouwen.csv")


Met str() krijg je een opsomming van alle variabelen in de dataset. Je vindt er ook telkens bij om welk datatype het gaat. Afhankelijk van het datatype zal je sommige functies wel of juist niet kunnen gebruiken om je data te verkennen. Het heeft bijvoorbeeld geen zin om een gemiddelde te berekenen van een variabele van type chr.

str(dataVertrouwen) 
'data.frame':   1217 obs. of  7 variables:
 $ X         : int  1 2 3 4 5 6 7 8 9 10 ...
 $ vertrouwen: num  2.85 -3.74 -1.74 -2.71 0.22 ...
 $ sesKind   : num  0.296 4.213 0.317 0.296 4.856 ...
 $ sesVolw   : num  -0.27 -2.33 2.48 2.48 1.09 ...
 $ geslacht  : chr  "Man" "Man" "Vrouw" "Vrouw" ...
 $ wrkls     : chr  "Ja" "Ja" "Nee" "Ja" ...
 $ burgst    : chr  "nooit getrouwd" "feitelijk gescheiden" "getrouwd" "getrouwd" ...

In de output van str() zie je inderdaad dat er 7 variabelen zijn met telkens 1217 observaties.



3 Een lineair model specifiëren in R

Je kan een model bouwen met de functie lm(). Het eerste argument van die functie is een formule waarin je specifieert welke variabelen je in het model wil opnemen:

  1. een afhankelijke variabele
  2. een tilde ~
  3. predictoren gescheiden door een +

In het tweede argument bepaal je uit welk dataframe de variabelen komen. Hier is dat dataVertrouwen.

Zo’n model kan je in een object met een eenvoudige naam stoppen.

mijnModel <- lm(vertrouwen ~ sesKind + sesVolw + wrkls + geslacht, data = dataVertrouwen)



4 Assumpties

Hypothesetoetsing met lineaire regressie is enkel een bruikbare en betrouwbare techniek als aan een reeks voorwaarden is voldaan. Die moet je verifiëren vooraleer je met de interpretatie mag beginnen.

De Gauss-Markovassumpties en de normaliteitsassumptie van de fouten1 kan je nagaan met plot(). Dit commando geeft je vier plots na elkaar. De eerste drie zijn relevant. In dit geval lijkt alles in orde en mag je verdergaan met de analyse.

Meer uitleg over de assumpties en deze plots vind je hier (vanaf 9.9).

plot(mijnModel)


Een laatste aandachtspunt vooraleer je tot de hypothesetoetsing kan overgaan, is collineariteit. Dat is een situatie waarbij predictoren sterk gecorreleerd zijn. Met de functie vif() uit het R-package car kan je te weten komen of er in jouw model een probleem is met collineariteit. Als de variance inflation factor (VIF) bij elke variabele in de buurt van 1 ligt, mag je verder met de analyse.

library(car)
vif(mijnModel)
 sesKind  sesVolw    wrkls geslacht 
1.005815 1.022536 1.026277 1.002000 

Meer uitleg over collineariteit vind je hier onder 9.4.5.



5 Hypothese over een continue predictor

Stel: je vermoedt dat iemands sociaal-economische status een invloed kan hebben op het vertrouwen in anderen.

Om de sociaal-economische status concreet te observeren stel je in een enquête een reeks vragen (o.a. naar het inkomen). Op basis daarvan stel je een continue variabele sesVolw op die de huidige sociaal-economische status weergeeft. Dat is in dit geval de predictor.

De afhankelijke variabele is vertrouwen. Ook deze continue variabele is gebaseerd op een reeks vragen uit een enquête.

Daarnaast controleren we voor nog andere predictoren. Dat doen we omdat de conclusie over het bestaan van een effect van sesVolw op vertrouwen kan afhangen van de aanwezigheid van die extra predictoren in het model. De algemene regel is: neem elke predictor op waarvan je denkt dat die een invloed heeft op de afhankelijke variabele en/of dat die gerelateerd is aan de predictor die je onderzoekt (hier sesVolw).


Nulhypothese en alternatieve hypothese

De nulhypothese \(H_0\) stelt dat er geen effect is. Dit komt overeen met een regressiecoëfficiënt \(\beta_1 = 0\).

De alternatieve hypothese2 is dan \(H_a: \beta_1 \neq 0\).


Significantieniveau

Net als bij elke hypothesetoets moet je een significantieniveau kiezen. Hier kiezen we voor de veelgebruikte waarde \(\alpha = 0.05\).


Output van het model in R

Met de functie summary() kan je heel veel relevante informatie over het model oproepen. Als argument geef je gewoon het object mijnModel.

summary(mijnModel)

Call:
lm(formula = vertrouwen ~ sesKind + sesVolw + wrkls + geslacht, 
    data = dataVertrouwen)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.7765 -1.5673 -0.0374  1.5510  6.8515 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)   -0.247813   0.178547  -1.388   0.1654    
sesKind       -0.070229   0.034594  -2.030   0.0426 *  
sesVolw        0.296349   0.036793   8.054  1.9e-15 ***
wrklsNee       0.292268   0.181447   1.611   0.1075    
geslachtVrouw -0.007192   0.124310  -0.058   0.9539    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.166 on 1212 degrees of freedom
Multiple R-squared:  0.06057,   Adjusted R-squared:  0.05747 
F-statistic: 19.54 on 4 and 1212 DF,  p-value: 1.357e-15

De regressiecoëfficiënten vind je in de kolom Estimate. De relevante coëfficiënt in dit voorbeeld is 0.2963487. Op basis van de data in deze steekproef verwacht je dus een waarde voor vertrouwen die 0.2963487 hoger ligt wanneer iemands score voor sesvolw één eenheid hoger ligt.


Conclusie

De coëfficiënt die hoort bij de sociaal-economische status sesVolw is 0.2963487. Deze waarde is niet gelijk aan nul, maar de vraag is: is deze waarde -die afkomstig is van jouw steekproef- verschillend genoeg van 0 om te concluderen dat de coëfficiënt op populatieniveau verschillend is van 0?

Deze vraag kan je beantwoorden door de p-waarde te vergelijken met het eerder gekozen significantieniveau \(\alpha\). De p-waarde vind je in de meest rechtse kolom genaamd Pr(>|t|).

In dit geval is de p-waarde gelijk aan \(1.8956034\times 10^{-15}\), met andere woorden veel kleiner dan 0.05. Je kan dus de nulhypothese verwerpen ten voordele van de alternatieve hypothese.


Betrouwbaarheidsinterval

Je kan tot dezelfde conclusie komen op basis van het betrouwbaarheidsinterval van de regressiecoëfficiënt.

confint(mijnModel, 'sesVolw')
            2.5 %    97.5 %
sesVolw 0.2241628 0.3685346

De waarde 0 ligt niet in dit interval.



6 Visualiseren

Het package effects laat je toe om eenvoudig visualisaties te maken van effecten in lineaire regressiemodellen.


install.packages('effects') # eenmalig het package installeren

library(effects) # package laden voor gebruik

plot(effect('sesVolw', mijnModel)) # let op de aanhalingstekens rond sesVolw



7 Voetnoten

8 Referenties

Mell H., Safra L., Demange P., Algan Y., Baumard N. & Chevallier C. (2021). Early life adversity is associated with diminished social trust in adults. Political Psychology. doi: 10.1111/pops.12756


  1. De normaliteitsassumptie is hier minder van belang omwille van de steekproefgrootte en de centrale limietstelling.↩︎

  2. De alternatieve hypothese is hier tweezijdig. Dat is vaak het geval bij lineaire regressie, maar het is ook mogelijk om een eenzijdige alternatieve hypothese op te stellen en te toetsen.↩︎